package com.zmn.oms.persistence.interfaces.order;

import com.zmn.oms.model.entity.order.Order;
import org.apache.ibatis.annotations.Param;

import java.util.Map;
import java.util.Set;

public interface OrderDao {

    Order findByKey(Long orderId);

    /**
     * 更新已确认状态
     *
     * @param order
     */
    void updateConfirmStatus(Order order);

    /**
     * 更新已领单或者已上门状态
     *
     * @param order
     * @param fields 需要更新的属性 totalAmount、depositAmount
     */
    void updateTakeOrVisitStatus(@Param("order") Order order, @Param("fields") Map<String, Boolean> fields);

    /**
     * 更新订单
     *
     * @param order
     * @return
     */
    int updateByKey(Order order);

    /**
     * 修改订单 （工单同步处理）
     * @param order
     * @return
     */
    int updateSyncOrder(Order order);

    /**
     * 修改用户Id
     * @param orderIdSet
     * @param newUserId
     */
    void updateUserIdByOrderIds(@Param("orderIdSet") Set<Long> orderIdSet, @Param("newUserId") Long newUserId);

    int insertOrder(Order order);

    /**
     * 更新地址
     *
     * @param order
     * @return
     */
    int updateAddressByKey(Order order);
}